{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# AUC"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实验说明\n",
    "\n",
    "模拟AUC曲线描述多分类的问题。\n",
    "\n",
    "数据集：\n",
    "\n",
    "* X 是随机生成服从正态分布的[0,1]之间的数据，大小是300x50\n",
    "* Y 0-100是分类0；100-200分类是1；200-300分类是2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LogisticRegression, LogisticRegressionCV\n",
    "from sklearn.preprocessing import label_binarize\n",
    "from numpy import interp\n",
    "from sklearn import metrics\n",
    "from itertools import cycle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Before = \n",
      " [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
      " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
      " 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(0)\n",
    "pd.set_option('display.width', 300)\n",
    "np.set_printoptions(suppress=True, linewidth=200)\n",
    "n = 300\n",
    "# 该函数的详细解释：http://blog.csdn.net/m0_38061927/article/details/75335069\n",
    "x = np.random.randn(n, 50)\n",
    "y = np.array([0]*100+[1]*100+[2]*100)\n",
    "n_class = 3\n",
    "print('Before = \\n', y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "After = \n",
      " [[1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [1 0 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 1 0]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]\n",
      " [0 0 1]]\n"
     ]
    }
   ],
   "source": [
    "clf = LogisticRegression(penalty='l2', C=1)\n",
    "clf.fit(x, y)\n",
    "y_score = clf.decision_function(x)\n",
    "# 分类标记y的one-hot编码\n",
    "y = label_binarize(y, classes=np.arange(n_class))\n",
    "print('After = \\n', y)\n",
    "colors = cycle('gbc')\n",
    "fpr = dict()\n",
    "tpr = dict()\n",
    "auc = np.empty(n_class+2)\n",
    "mpl.rcParams['font.sans-serif'] = u'SimHei'\n",
    "mpl.rcParams['axes.unicode_minus'] = False\n",
    "plt.figure(figsize=(7, 6), facecolor='w')\n",
    "for i, color in zip(np.arange(n_class), colors):\n",
    "    fpr[i], tpr[i], thresholds = metrics.roc_curve(y[:, i], y_score[:, i])\n",
    "    auc[i] = metrics.auc(fpr[i], tpr[i])\n",
    "    plt.plot(fpr[i], tpr[i], c=color, lw=1.5, alpha=0.7, label=u'AUC=%.3f' % auc[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "numpy.flatten() 与 numpy.ravel()的区别\n",
    "\n",
    "首先声明两者所要实现的功能是一致的（将多维数组降位一维），\n",
    "\n",
    "两者的区别在于返回拷贝（copy）还是返回视图（view），\n",
    "\n",
    "numpy.flatten()返回一份拷贝，对拷贝所做的修改不会影响（reflects）原始矩阵，\n",
    "\n",
    "numpy.ravel()返回的是视图（view，也颇有几分C/C++引用reference的意味），会影响（reflects）原始矩阵。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.768       0.7572      0.78985     0.7729      0.77523333]\n",
      "Macro AUC: 0.771683333333\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb0AAAGECAYAAACiW/4hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xl4lOW5+PHvzGSyTmayQhYIhFVk\nE4OIQBYi4IKittYWrVXBUqutnHo8KuegVaqlnra21B9VsXZRT6WLVFsqxABmASIQQRZBBJIwhASy\nkG2WTGZ5f38MGRKSwCRkMpPk/lwXF8zM875zTwK5ee/3fp5HpSiKghBCCDEIqP0dgBBCCNFXJOkJ\nIYQYNCTpCSGEGDQk6QkhhBg0JOkJ0c8oikJFRYW/wxCiXwrydwBCiK6dPHmS8vJyTp06xYkTJ9i/\nfz87duwgIiKCL7/8ErVa/t8qRHfIvxgheiAvLw+VSuX5FRMTw4IFC9izZ49nzN69e0lPTycsLIzh\nw4ezevXqDufJzc3l2muvJTQ0lMmTJ/Pxxx+3e/0nP/kJ8+bN48c//jG/+tWvqK6uZtWqVbz++uu0\ntLRQU1NDWVlZh18ul6vdeU6ePIlKpeKnP/1pp5/j008/bff8pEmTePDBBz2PzWYzjz76KDExMURF\nRbFs2TIsFktPv3xC+I0kPSGuwNq1a9m9ezdvvvkmdXV1ZGZmcvz4cU6fPs2NN96IxWLh/fff5/77\n7+e///u/eeWVVzzHFhUVsXDhQiZPnszmzZvJzMzk9ttv58SJE54xv/3tb7FYLBw9epQ5c+aQmZnJ\n0qVLyc7OJjQ0lP/6r/8iNTW1w6+mpqZ2cebk5LT7vbu+9a1v8fe//53XXnuNP/7xj2zatIkf/vCH\nPTqXEH6lCCG67ZNPPlEAJTc31/NcZWWlotVqlRdeeEF5+umnlaCgIKW8vNzz+qJFi5QhQ4YoTqdT\nURRFycjIUCZNmuR5rCiKMmbMGOV73/tep+95xx13KD/+8Y/bPffII48oDzzwQIe4LBZLu3Ff+9rX\nlODgYCUoKEhpbGzsML6oqKjd+IkTJ3rOu23bNgVQ/vKXv3hef/fddxWNRtPu8wnRH8iVnhC9JCEh\ngWHDhlFeXs62bduYMmUKycnJntfnz59PVVUVR44coaamhsLCQu6+++529+Wuu+46Dh48CEBTUxNH\n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\nfxqJJeyYaisKAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x18ca11b37f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fpr['micro'], tpr['micro'], thresholds = metrics.roc_curve(y.ravel(), y_score.ravel())\n",
    "auc[n_class] = metrics.auc(fpr['micro'], tpr['micro'])\n",
    "plt.plot(fpr['micro'], tpr['micro'], c='r', lw=2, ls='-', alpha=0.8, label=u'micro，AUC=%.3f' % auc[n_class])\n",
    "# macro\n",
    "fpr['macro'] = np.unique(np.concatenate([fpr[i] for i in np.arange(n_class)]))\n",
    "tpr_ = np.zeros_like(fpr['macro'])\n",
    "for i in np.arange(n_class):\n",
    "    tpr_ += interp(fpr['macro'], fpr[i], tpr[i])\n",
    "tpr_ /= n_class\n",
    "tpr['macro'] = tpr_\n",
    "auc[n_class+1] = metrics.auc(fpr['macro'], tpr['macro'])\n",
    "print(auc)\n",
    "print('Macro AUC:', metrics.roc_auc_score(y, y_score, average='macro'))\n",
    "plt.plot(fpr['macro'], tpr['macro'], c='m', lw=2, alpha=0.8, label=u'macro，AUC=%.3f' % auc[n_class+1])\n",
    "plt.plot((0, 1), (0, 1), c='#808080', lw=1.5, ls='--', alpha=0.7)\n",
    "plt.xlim((-0.01, 1.02))\n",
    "plt.ylim((-0.01, 1.02))\n",
    "plt.xticks(np.arange(0, 1.1, 0.1))\n",
    "plt.yticks(np.arange(0, 1.1, 0.1))\n",
    "plt.xlabel('False Positive Rate', fontsize=13)\n",
    "plt.ylabel('True Positive Rate', fontsize=13)\n",
    "plt.grid(b=True)\n",
    "plt.legend(loc='lower right', fancybox=True, framealpha=0.8, fontsize=12)\n",
    "# plt.legend(loc='lower right', fancybox=True, framealpha=0.8, edgecolor='#303030', fontsize=12)\n",
    "plt.title(u'ROC和AUC', fontsize=17)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
